Julia 引用
阐述
是将一段 Julia 代码转换为表达式对象的语法,具有行内 :(...)
和块 quote ... end
两种形式,后者还会包含行号等信息。
插值
在引用中可以用 $
后跟一个变量或一个值来进行插值,这个值可以是字面量、符号或表达式等。也可以用 $(args...)
语法一次性将多个值插入。
当遇到嵌套的 quote
时,$
「属于」直接包含它的 quote
,只有在这个 quote
出现在顶层时这个 $
才会被执行。但是,可以用多个 $
来插值到内层的 quote
中。
实例
julia> ex = :(a in $:((1,2,3)) )
:(a in (1, 2, 3))
julia> args = [:x, :y, :z];
julia> :(f(1, $(args...)))
:(f(1, x, y, z))
julia> x = :(1 + 2);
julia> e = quote quote $x end end
quote
#= none:1 =#
$(Expr(:quote, quote
#= none:1 =#
$(Expr(:$, :x))
end))
end
julia> e = quote quote $$x end end
quote
#= none:1 =#
$(Expr(:quote, quote
#= none:1 =#
$(Expr(:$, :(1 + 2)))
end))
end